#ifndef DIGDUG_H
#define DIGDUG_H

#include "Movables.h"
#include "GlobalVariables.h"
#include "Map.h"
#include "Point.h"
#include "Utilities.h"


/*! \brief A derived class of Movables containing Dig Dug's implementation.

	The main functionality of this class involves the movemenet and collision detection for Dig Dug. 
	Dig Dug has a unique set of rules which govern his movement. These are implemented in the inherited collisionCheck function.

*/

class Digdug: public Movables{

public:
	Digdug(Point& location); // Constructor
	Digdug(){}

	//! \brief Contains implementation of move function defined in parent class, making use of rules speecific to digdug's movement.
	virtual DetectionResult move(Map &map);	
	
	//! \brief Set _is_moving data member to true if an instruction to move is given and update digdug's direction to that input by the user.
	virtual void allowMove(Direction direction);

private:
	bool _is_moving;

	/*! \brief Performs collision detection using rules specific to digdug.

		Digdug can move through sand and holes, but is killed by monsters. 
		The addition of extra object types would require additional rules to be added to this function.

	*/
	virtual DetectionResult collisionCheck(Movable_type position_type) const;
};

#endif